// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.SQLStatement;
// import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObjectImpl;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "OracleStatementImpl.h"
#include "OracleStatement.h"
#include "../OracleSQLObjectImpl.h"

class OracleExceptionStatement_Item : virtual public OracleSQLObjectImpl
{
public:
  SQLExpr_ptr when;
  SQLStatement_list_ptr statements;

  OracleExceptionStatement_Item();

  SHAREDOBJECT(OracleExceptionStatement_Item);
  SQLExpr_ptr getWhen();

  void setWhen(SQLExpr_ptr when);

  SQLStatement_list_ptr getStatements();

  void setStatement(SQLStatement_ptr statement);

  // @Override
  void accept0(OracleASTVisitor_ptr visitor);

  SQLObject_ptr clone();
};

class OracleExceptionStatement : virtual public OracleStatementImpl, virtual public OracleStatement
{
public:
  OracleExceptionStatement_Item_list_ptr items;

  OracleExceptionStatement();
  SHAREDOBJECT(OracleExceptionStatement);

  OracleExceptionStatement_Item_list_ptr getItems();

  void addItem(OracleExceptionStatement_Item_ptr item);

  // @Override
  void accept0(OracleASTVisitor_ptr visitor);

  SQLObject_ptr clone();
};
